package com.tarena.charging.device.controller;

import cn.tedu.charging.common.pojo.JsonResult;
import cn.tedu.charging.common.pojo.param.GunStatusUpdateParam;
import cn.tedu.charging.common.pojo.vo.StationInfoVO;
import com.tarena.charging.device.service.DeviceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Api(tags="设备模块")
public class DeviceController {
    @Autowired
    private DeviceService deviceService;
    //第一个接口方法 查询附近充电站
    @ApiOperation("查询附近充电站")
    @GetMapping("/device/station/near")
    public JsonResult<List<StationInfoVO>> getNearStations(Double longitude,Double latitude,Double distance){
        //考虑业务逻辑应该怎么处理
        //查询附近充电站信息 封装vos列表数据
        List<StationInfoVO> vos=deviceService.getNearStation(longitude,latitude,distance);
        return JsonResult.ok(vos);
    }
    //对外提供 利用gunId查询场站信息的接口功能
    @ApiOperation("获取站场信息")
    @GetMapping("/device/station/info/{gunId}")
    public JsonResult<StationInfoVO> getStationInfo(@PathVariable("gunId") Integer gunId){
        //依照 开发代码结构的习惯 控制层返回什么数据 业务层 就封装读什么数据
        StationInfoVO vo=deviceService.getStationInfo(gunId);
        return JsonResult.ok(vo);
    }
    //更新枪状态
    //根据订单需求 修改gun状态
    @ApiOperation("更新枪状态")
    @PostMapping("/device/gun/status/using")
    public JsonResult<Boolean> updateGunStatus(@RequestBody GunStatusUpdateParam param){
        //update gun_info set status=#{status} where id=#{gunId}
        Boolean result = deviceService.updateGunStatus(param);
        return JsonResult.ok(result);
    }
}
